package entity

import (
	"time"
)

type SysRule struct {
	ID         uint64    `json:"id" gorm:"column:id"`
	KefuId     uint64    `json:"kefuId" gorm:"column:kefu_id"`
	Host       string    `json:"host" gorm:"column:host"`
	HostMatch  uint8     `json:"hostMatch" gorm:"column:host_match"`
	HostUse    uint8     `json:"hostUse" gorm:"column:host_use"`
	Ip         string    `json:"ip" gorm:"column:ip"`
	IpMatch    uint8     `json:"ipMatch" gorm:"column:ip_match"`
	IpUse      uint8     `json:"ipUse" gorm:"column:ip_use"`
	Sort       int       `json:"sort" gorm:"column:sort"`
	CreateTime time.Time `json:"createTime" gorm:"column:create_time"`
	CreateBy   int64     `json:"createBy" gorm:"column:create_by"`
}

func (SysRule) TableName() string {
	return "sys_rule"
}

// 规则分页
type RulePageQuery struct {
	PageQuery PageQuery
	Host      *string `json:"host" form:"host"`
	Ip        *string `json:"ip" form:"ip"`
}

type SysRuleForm struct {
	ID        uint64 `json:"id" gorm:"column:id"`
	KefuId    uint64 `json:"kefuId" gorm:"column:kefu_id"`
	Host      string `json:"host" gorm:"column:host"`
	HostMatch uint8  `json:"hostMatch" gorm:"column:host_match"`
	HostUse   uint8  `json:"hostUse" gorm:"column:host_use"`
	Ip        string `json:"ip" gorm:"column:ip"`
	IpMatch   uint8  `json:"ipMatch" gorm:"column:ip_match"`
	IpUse     uint8  `json:"ipUse" gorm:"column:ip_use"`
	Sort      int    `json:"sort" gorm:"column:sort"`
}

type SysRuleBo struct {
	ID         uint64    `json:"id" gorm:"column:id"`
	KefuId     uint64    `json:"kefuId" gorm:"column:kefu_id"`
	KefuName   string    `json:"kefuName" gorm:"column:username"`
	Host       string    `json:"host" gorm:"column:host"`
	HostMatch  uint8     `json:"hostMatch" gorm:"column:host_match"`
	HostUse    uint8     `json:"hostUse" gorm:"column:host_use"`
	Ip         string    `json:"ip" gorm:"column:ip"`
	IpMatch    uint8     `json:"ipMatch" gorm:"column:ip_match"`
	IpUse      uint8     `json:"ipUse" gorm:"column:ip_use"`
	Sort       int       `json:"sort" gorm:"column:sort"`
	CreateTime time.Time `json:"createTime" gorm:"column:create_time"`
	CreateBy   int64     `json:"createBy" gorm:"column:create_by"`
}

type SysRuleVo struct {
	ID         uint64 `json:"id" gorm:"column:id"`
	KefuId     uint64 `json:"kefuId" gorm:"column:kefu_id"`
	KefuName   string `json:"kefuName"`
	Host       string `json:"host" gorm:"column:host"`
	HostMatch  uint8  `json:"hostMatch" gorm:"column:host_match"`
	HostUse    uint8  `json:"hostUse" gorm:"column:host_use"`
	Ip         string `json:"ip" gorm:"column:ip"`
	IpMatch    uint8  `json:"ipMatch" gorm:"column:ip_match"`
	IpUse      uint8  `json:"ipUse" gorm:"column:ip_use"`
	Sort       int    `json:"sort" gorm:"column:sort"`
	CreateTime string `json:"createTime" gorm:"column:create_time"`
	CreateBy   int64  `json:"createBy" gorm:"column:create_by"`
}
